home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / savg / state.frm < prev    next >
Text File  |  1995-01-09  |  6KB  |  208 lines

  1. VERSION 2.00
  2. Begin Form Form1 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "Saving Game States"
  5.    ClientHeight    =   3780
  6.    ClientLeft      =   1920
  7.    ClientTop       =   1635
  8.    ClientWidth     =   6240
  9.    Height          =   4185
  10.    Left            =   1860
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   3780
  13.    ScaleWidth      =   6240
  14.    Top             =   1290
  15.    Width           =   6360
  16.    Begin TextBox txtStringData 
  17.       Height          =   285
  18.       Left            =   300
  19.       TabIndex        =   2
  20.       Text            =   "Enter some text here."
  21.       Top             =   2760
  22.       Width           =   5655
  23.    End
  24.    Begin PictureBox picField 
  25.       BackColor       =   &H00E0FFFF&
  26.       Height          =   2325
  27.       Left            =   240
  28.       ScaleHeight     =   2295
  29.       ScaleWidth      =   5805
  30.       TabIndex        =   1
  31.       Top             =   360
  32.       Width           =   5835
  33.       Begin Image imgObject 
  34.          Height          =   480
  35.          Index           =   2
  36.          Left            =   1860
  37.          Picture         =   STATE.FRX:0000
  38.          Top             =   600
  39.          Width           =   480
  40.       End
  41.       Begin Image imgObject 
  42.          Height          =   480
  43.          Index           =   1
  44.          Left            =   3840
  45.          Picture         =   STATE.FRX:0302
  46.          Top             =   1380
  47.          Width           =   480
  48.       End
  49.       Begin Image imgObject 
  50.          Height          =   480
  51.          Index           =   0
  52.          Left            =   600
  53.          Picture         =   STATE.FRX:0604
  54.          Top             =   1080
  55.          Width           =   480
  56.       End
  57.    End
  58.    Begin CommandButton btnSwitch 
  59.       Caption         =   "&Switch"
  60.       Height          =   375
  61.       Left            =   2640
  62.       TabIndex        =   0
  63.       Top             =   3240
  64.       Width           =   1275
  65.    End
  66.    Begin Label lblCurrentState 
  67.       BackStyle       =   0  'Transparent
  68.       Caption         =   "Label1"
  69.       Height          =   195
  70.       Left            =   240
  71.       TabIndex        =   3
  72.       Top             =   120
  73.       Width           =   2595
  74.    End
  75. End
  76. Option Explicit
  77. '--------------------------------------------------
  78. ' STATE.FRM
  79. '--------------------------------------------------
  80.  
  81. ' Number of states we're tracking in this program.
  82. Const NUM_STATES = 2
  83.  
  84. ' Boolean indicating if we're currently dragging
  85. ' an object.
  86. Dim Dragging(0 To NUM_OBJECTS) As Integer
  87.  
  88. ' Used while dragging an object.
  89. Dim Ofs As tPoint
  90.  
  91. ' Boolean that indicates if we are allowed to
  92. ' change the border style of an object.
  93. Dim ChangeStyle As Integer
  94.  
  95. ' An array of state structures. In practice, each
  96. ' element corresponds to a player.
  97. Dim State(1 To NUM_STATES) As tState
  98.  
  99. ' The state (or player, if you will) that is currently
  100. ' active.
  101. Dim CurrentState As Integer
  102.  
  103.  
  104. Sub btnSwitch_Click ()
  105. '--------------------------------------------------
  106. ' Switch between the two game states (Players 1 and 2).
  107. '--------------------------------------------------
  108.  
  109.     If CurrentState = 1 Then
  110.         SaveState 1
  111.         LoadState 2
  112.         CurrentState = 2
  113.     Else
  114.         SaveState 2
  115.         LoadState 1
  116.         CurrentState = 1
  117.     End If
  118.     lblCurrentState = "State " & Format$(CurrentState)
  119. End Sub
  120.  
  121. Sub Form_Load ()
  122. '--------------------------------------------------
  123. ' Set the initial active state to Player 1.
  124. '--------------------------------------------------
  125.     
  126.     CurrentState = 1
  127.     lblCurrentState = "State " & Format$(CurrentState)
  128. End Sub
  129.  
  130. Sub imgObject_Click (Index As Integer)
  131. '--------------------------------------------------
  132. ' If the user clicks once on an object, then toggle
  133. ' that image's border style.
  134. '--------------------------------------------------
  135.  
  136.     If ChangeStyle Then
  137.         imgObject(Index).BorderStyle = (imgObject(Index).BorderStyle + 1) Mod 2
  138.     End If
  139.     ChangeStyle = True
  140. End Sub
  141.  
  142. Sub imgObject_MouseDown (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  143. '--------------------------------------------------
  144. ' If the mouse is held down over an object, prepare
  145. ' to drag that object.
  146. '--------------------------------------------------
  147.  
  148.     Dragging(Index) = True
  149.     Ofs.X = X
  150.     Ofs.Y = Y
  151. End Sub
  152.  
  153. Sub imgObject_MouseMove (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  154. '--------------------------------------------------
  155. ' Drag an object if the mouse is clicked and
  156. ' dragged over it.
  157. '--------------------------------------------------
  158.     
  159.     If Dragging(Index) Then
  160.         imgObject(Index).Move imgObject(Index).Left + (X - Ofs.X), imgObject(Index).Top + (Y - Ofs.Y)
  161.         ChangeStyle = False
  162.     End If
  163. End Sub
  164.  
  165. Sub imgObject_MouseUp (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  166. '--------------------------------------------------
  167. ' End the drag process.
  168. '--------------------------------------------------
  169.  
  170.     Dragging(Index) = False
  171.  
  172. End Sub
  173.  
  174. Sub LoadState (StateNum As Integer)
  175. '--------------------------------------------------
  176. ' Take information for a particular state (ie,, player)
  177. ' and display it on the screen, in effect activating
  178. ' the player.
  179. '--------------------------------------------------
  180. Dim i As Integer
  181.  
  182.     For i = 0 To NUM_OBJECTS - 1
  183.         imgObject(i).Left = State(StateNum).Object(i).Pos.X
  184.         imgObject(i).Top = State(StateNum).Object(i).Pos.Y
  185.         imgObject(i).BorderStyle = State(StateNum).Object(i).BorderStyle
  186.     Next
  187.  
  188.     txtStringData = State(StateNum).TextData
  189.  
  190. End Sub
  191.  
  192. Sub SaveState (StateNum As Integer)
  193. '--------------------------------------------------
  194. ' Save information about the current screen back
  195. ' into a state structure.
  196. '--------------------------------------------------
  197. Dim i As Integer
  198.  
  199.     For i = 0 To NUM_OBJECTS - 1
  200.         State(StateNum).Object(i).Pos.X = imgObject(i).Left
  201.         State(StateNum).Object(i).Pos.Y = imgObject(i).Top
  202.         State(StateNum).Object(i).BorderStyle = imgObject(i).BorderStyle
  203.     Next
  204.  
  205.     State(StateNum).TextData = txtStringData
  206. End Sub
  207.  
  208.